#include <vector>
#include <iostream>
#include <string>
#include <Animatable.hpp>
#include <Matrix.hpp>

#ifndef _CLASSMODELINGNODE_
#define _CLASSMODELINGNODE_

namespace Modeling {

enum {
	ROOT,
	MESH,
	LIGHT,
	CAMERA
};

class Node : public Modeling::Animatable
{
public:
	virtual ~Node();
	Node();
	Node(std::string name);

	unsigned int getChildrenQty();
	void addChild(Node* node);
	Node* getChild(unsigned int index);

	std::string getName();
	void setName(std::string name);

	virtual int type() = 0;

	Mathing::Matrix4f* getMatrix(unsigned int index);
	Mathing::Matrix4f* addMatrix(Mathing::Matrix4f matrix);
	unsigned int getMatricesQty();
	
private:
	std::string name;
	std::vector< Node* > child;

	std::vector< Mathing::Matrix4f* > matrix;
};

} // namespace Modeling

#endif
